
#ifndef  HELPER_OBJECT_STANDARDSTRING_H
#define  HELPER_OBJECT_STANDARDSTRING_H

#include <string>
#include "helper/object/String.h"

namespace helper {
namespace object {

class StandardString : public String{
public:
    StandardString();
    explicit StandardString(const std::string & str);
    explicit StandardString(const char * str);
    explicit StandardString(const char * buffer, size_t len);
    explicit StandardString(const char * buffer, size_t offset, size_t len);
    explicit StandardString(size_t n, const char ch);
    ~StandardString() override;

    void setValue(const std::string & value) override;
    const std::string & getValue() const override;
    size_t size() const override;

    void append(const std::string & str) override;
    void append(char ch) override;

    std::string toString() const override;
    Object * copy() const override;

    bool equals(const Object & obj) const override;

    void clear() override;
private:
    std::string value_;
};

} // end of namespace object
} // end of namespace helper

#endif   /* HELPER_OBJECT_STANDARDSTRING_H */
